Current methods for the backup and recovery of data objects stored in a file system typically involve transmitting, or “streaming” data objects from the file system through a network, then writing the streamed objects to tape or disk storage media (“backup storage”). A backup and recovery application (“BURA”) running on a backup client may help manage the backup process, as well as the recovery process in the event a backed up data object needs to be restored. The backup client running the may be a node, server or other computing device that also provides the hardware and memory for processing data objects during the backup process.
During the backup process, the BURA will often identify the path information or “hierarchy” for the data object as it originally resided on the file system. This information may be found in metadata associated with each data object. The BURA can direct storage and use of this information to create and display a directory tree resembling the file system, except that data objects shown in the directory tree will be mapped to their locations in backup storage rather than their locations in the original file system. The directory tree eases browsing of the backup storage to identify and located data objects for recovery. However, when data objects are backed up, they are not organized according to their original path addresses. Data objects are streamed to backup in a seemingly random order. As such, the BURA must parse the streamed data objects to identify each path address, then store this information in memory associated with the BURA. In most cases, this information is stored in the memory for the backup client. For large file systems, the backup client will require large amounts of memory for processing and creating a directory hierarchy for the backed up data objects. In addition, the time required for processing and storing path information, as well as creating the directory hierarchy can greatly slow the backup process and can strain network resources.
What is therefore needed is a way to optimize the backup process and reduce the strain on backup and recovery resources. What is needed is a way to reduce the amount of processing required by the backup and recovery application.